﻿using System;

namespace ModelCheckUtility.ModelLayer
{
	public class FactoryBean<AreaClass, RoomClass, BoundaryClass, DoorClass, HostElementClass> where AreaClass : BaseAreaPacker where RoomClass : BaseRoomPacker where BoundaryClass : BaseBoundarySegmentPacker where DoorClass : BaseDoorPacker where HostElementClass : BaseHostInRoomPacker
	{
		public AreaClassFactory<AreaClass> UseAreaFactory
		{
			get
			{
				return this.m_useAreaFactory;
			}
			set
			{
				this.m_useAreaFactory = value;
			}
		}

		public RoomClassFactory<RoomClass> RoomFactory
		{
			get
			{
				return this.m_roomFactory;
			}
			set
			{
				this.m_roomFactory = value;
			}
		}

		public DoorClassFactory<DoorClass> DoorFactory
		{
			get
			{
				return this.m_doorFactory;
			}
			set
			{
				this.m_doorFactory = value;
			}
		}

		public BoundarySegmentFactory<BoundaryClass> BoundarySemgentFactory
		{
			get
			{
				return this.m_boundarySemgentFactory;
			}
			set
			{
				this.m_boundarySemgentFactory = value;
			}
		}

		public HostInRoomClassFactory<HostElementClass> HostInRoomClassFactory
		{
			get
			{
				return this.m_hostInRoomClassFactory;
			}
			set
			{
				this.m_hostInRoomClassFactory = value;
			}
		}

		private AreaClassFactory<AreaClass> m_useAreaFactory;

		private RoomClassFactory<RoomClass> m_roomFactory;

		private DoorClassFactory<DoorClass> m_doorFactory;

		private BoundarySegmentFactory<BoundaryClass> m_boundarySemgentFactory;

		private HostInRoomClassFactory<HostElementClass> m_hostInRoomClassFactory;
	}
}
